#include "dl_lua.h"

#ifndef __LINUX__
#pragma comment(lib,"lua5.1.lib")
#endif

double getfield_number(lua_State* L, const char* key)
{
	if (!lua_istable(L, -1))
	{
		printf("please check index: %s \n", key);
		return 0.0f;
	}

	double result;
	lua_pushstring(L, key);

	lua_gettable(L, -2);
	if (!lua_isnumber(L, -1))
	{
		lua_pop(L, 1);
		return -1;
	}
	result = lua_tonumber(L, -1);
	lua_pop(L, 1);
	return result;
}

bool getfield_string(lua_State* L, const char* key, char* variable)
{
	if (!lua_istable(L, -1))
	{
		printf("please check index: %s \n", key);
		return false;
	}

	lua_pushstring(L, key);

	lua_gettable(L, -2);
	if (!lua_isstring(L, -1))
	{
		lua_pop(L, 1);
		return false;
	}

	int len = strlen(lua_tostring(L, -1));
	memcpy(variable, lua_tostring(L, -1), len);
	variable[len] = '\0';

	lua_pop(L, 1);
	return true;
}


/**
/*  返回值: 成功，表在栈顶
 */
bool getfield_table(lua_State* L, const char* key)
{
	if (L == NULL || key == NULL) {
		return false;
	}

	if (!lua_istable(L, -1)) {
		return false;
	}

	lua_pushstring(L, key);
	lua_gettable(L, -2);

	if (!lua_istable(L, -1)) {
		lua_pop(L, 1);
		return false;
	}

	return true;
}